// Package main 演示GORM单表操作，包括数据插入等基本操作
// 本示例展示了GORM的基本数据插入功能，包括单条插入、回填式插入和批量插入
package main

import (
	"fmt"
	"gin-gorm/global"
	"gin-gorm/models"
)

// main 程序入口函数，演示数据插入操作
func main() {
	// 初始化数据库连接
	// 调用global包中的Connect函数建立数据库连接
	global.Connect()

	// 插入单条数据
	// 使用Create方法创建一个UserModel实例并插入到数据库中
	// Create方法会自动将数据插入到users表中（根据models.UserModel的定义）
	err := global.DB.Create(&models.UserModel{
		Name: "枫枫", // 设置用户名
		Age:  25,   // 设置年龄
	}).Error

	// 检查插入操作是否出错
	// 通过检查Create方法返回的Error来确定操作是否成功
	// 如果err为nil，则表示插入成功
	if err != nil {
		fmt.Println("插入数据失败:", err)
	}

	// 回填式插入数据（被注释掉的示例）
	// 这种方式插入数据后，会自动将生成的ID和CreatedAt等字段回填到user变量中
	// user := models.UserModel{
	// 	Name: "张三",
	// 	Age:  25,
	// }
	// err := global.DB.Create(&user).Error
	// if err != nil {
	// 	fmt.Println(err)
	// 	return
	// }
	// fmt.Println("插入成功，用户ID:", user.ID, "创建时间:", user.CreatedAt, "用户名:", user.Name)

	// 批量插入数据（被注释掉的示例）
	// GORM支持通过切片进行批量插入操作
	// 使用Create方法插入切片时，会自动执行批量插入
	// var userList = []models.UserModel{
	// 	{Name: "王五"},
	// 	{Name: "李四"},
	// }
	// err := global.DB.Create(&userList).Error
	// if err != nil {
	// 	fmt.Println(err)
	// 	return
	// }
}
